/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package algoritmo2.mutacion;

import algoritmo2.Arbol;
import algoritmo2.Individuo;
import algoritmo2.RandomPropio;
import java.util.ArrayList;

/**
 *
 * @author Ra
 */
public class MutacionPropia2 extends Mutacion{

    @Override
    public void mutacion(Individuo padre1) {
        ArrayList<String> cjtoTer = new ArrayList<String>();
        
        cjtoTer.add("D0");
        cjtoTer.add("D1");
        cjtoTer.add("D2");
        cjtoTer.add("D3");
        ArrayList<String> cjtoTerIf = new ArrayList<String>();
        cjtoTerIf.add("A0");
        cjtoTerIf.add("A1");

        Arbol  nodo = RandomPropio.dameNodoTerminal(padre1);
        Arbol aux = nodo;
        while(aux.getPadre()!= null && !aux.getNombre().equals("IF")){
            aux = aux.getPadre();
        }
        if(aux.getPadre()!= null){
            if(!aux.isEsHd() && !aux.isEsHi()){
                if(nodo.getNombre().equals("A0")){
                    nodo.setNombre("A1");
                }
                else{
                    nodo.setNombre("A0");
                }
                //el nodo seleccionado pertenece a una rama de condicion de if
                int valor = RandomPropio.intRandom(0, cjtoTerIf.size());
                nodo.setNombre(cjtoTer.get(valor));
            }
            else{
                //pertenece a un then o un else
                int valor = RandomPropio.intRandom(0, cjtoTer.size());
                nodo.setNombre(cjtoTer.get(valor));
            }
        }

        
        
    }

}
